CI/CD workshop for Amazon ECSをやってみた

CI/CD workshop for Amazon ECSをやってみた

本番運用を想定したCI/CDパイプライン構築のハンズオンをご紹介します。
Clock Icon2022.08.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。ネクストモードの田邉です。

自己学習のためにAWS WorkshopsのCI/CD workshop for Amazon ECSをやってみたのでご紹介します。

CI/CD workshop for Amazon ECS

AWS Workshopsについて

AWSから提供されているサービス・テーマ別のワークショップです。

入門・中級・上級・エキスパートとレベル設定されているため、様々な方に活用する機会があると思います。

言語は基本的に英語のみですが、AWSサービスの概要を理解されてる方であれば実践可能な内容になっています。

AWS Workshops

おすすめしたい方

  • AWSでCI/CD導入を検討中の方
  • AWS資格勉強中(DVA/DOP)の方
  • AWS Hands-on for Beginnersを一通り実施済みで実践向けのハンズオンを求めている方

ワークショップのゴール

ステージング環境と本番環境に対して一環した以下のパイプラインが構築できます。

ステージング環境から本番環境へのデプロイ前に手動承認ステップが存在しています。

本番環境はブルー/グリーンデプロイ構成になっております。実際のエンタープライズ環境でも採用可能な構成になっていると思います。

ワークショップ概要

ワークショップは主に4Stepで構成されています。

以下は概要です。

    1. CodeCommitセットアップ
    2. ステージング環境構築&ローリングアップデート
      1. ECRでリポジトリ作成
      2. ECSでリソース作成
      3. CodePipeline作成
      4. ローリングアップデートを実行
    3. 本番環境構築&ブルー/グリーンデプロイ
      1. ブルー/グリーンのターゲットグループ作成
      2. ECSでリソース作成
      3. CodeDeploy設定(AllAtOnce)
      4. CodePipelineステージ追加(承認プロセスと本番デプロイ)
      5. 設定ファイルを更新してCodePipelineを実行
    4. CodeDeployオプションの設定
      1. テストポートの設定
      2. デプロイ実行、テストポート確認、ロールバック
      3. CodeDeploy設定変更(AllAtOnce -> Canary10Percent5Minutes)
      4. ロールバックしたデプロイの再デプロイとCanaryデプロイの挙動確認

ワークショップ内に詳細なStepが記載されております。こちら紹介用のため、差異がある点はご了承ください。

やってみた

環境構築は基本的にAWS CLIからの操作になっており、CloudFormationで検証環境(staging)、本番環境(prod)のスタックを作成します。

必要なパラメータなどは全てワークショップ内に記述されてるので、コピー&ペースとでサクサク進められました。

以下は本番環境Canaryデプロイのステータス画面です。こちらかデプロイ、デプロイ停止、ロールバック、再デプロイ操作を実際に試してみました。

こちらのWorkshopではテストトラフィックルーティン後と本番トラフィックルーティングのタイミングで、それぞれ1時間の待機時間をセットしています。※待機時間は省略可能です

うっかりソースコードをコミットしてしまった場合もデプロイ停止やロールバック可能な安心設計になっていますね(笑)

つまずいた点

途中でCloudFormationからスタック作成時にエラーが発生しました。

原因は一部リソースがサービスクォータによる制限値に達していることが原因でしたので、ワークショップ自体はガイドに沿って操作すれば環境構築可能でした。

さいごに

実際の利用を想定した際に出てくる「テスト」「承認」ステップやオペレーションミス時の「ロールバック」などが考慮されており、実践的なハンズオンを体験できました。

AWS Workshopsは他にも様々なハンズオンがあるので、今後も試してみて情報発信していきたいと思います。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.